﻿Imports WSEntidades
Imports Utilerias
Imports WSDatos

Public Class TipoDocumentosBL

    Private Function EsValidoParaActualizar(ByRef pTipoDocumentos As TipoDocumentosBE, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try
            'If (pTipoDocumentos.IdtipoDoctos <= 0) Then
            '    mensaje &= "El Id de Tipos de Documentos debe existir previamente." & vbCrLf
            'End If

            If (pTipoDocumentos.UsaFactura) Then
                If (String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalFactura)) Then
                    mensaje &= "El Régimen Fiscal para emisión de Facturas es requerido." & vbCrLf
                End If
            End If

            If Not (String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalFactura)) Then
                pTipoDocumentos.RegimenFiscalFactura = pTipoDocumentos.RegimenFiscalFactura.Trim
                If (pTipoDocumentos.RegimenFiscalFactura.Length > 100) Then
                    pTipoDocumentos.RegimenFiscalFactura = pTipoDocumentos.RegimenFiscalFactura.Substring(0, 100)
                End If
            End If

            If (pTipoDocumentos.UsaCartaPorte) Then
                If (String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalCartaPorte)) Then
                    mensaje &= "El Régimen Fiscal para emisión de Cartas Porte es requerido." & vbCrLf
                End If
            End If

            If Not (String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalCartaPorte)) Then
                pTipoDocumentos.RegimenFiscalCartaPorte = pTipoDocumentos.RegimenFiscalCartaPorte.Trim
                If (pTipoDocumentos.RegimenFiscalCartaPorte.Length > 100) Then
                    pTipoDocumentos.RegimenFiscalCartaPorte = pTipoDocumentos.RegimenFiscalCartaPorte.Substring(0, 100)
                End If
            End If

            If (pTipoDocumentos.UsaReciboHonorarios) Then
                If (String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalReciboHonorarios)) Then
                    mensaje &= "El Régimen Fiscal para emisión de Recibo de Honorarios es requerido." & vbCrLf
                End If
            End If

            If Not (String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalReciboHonorarios)) Then
                pTipoDocumentos.RegimenFiscalReciboHonorarios = pTipoDocumentos.RegimenFiscalReciboHonorarios.Trim
                If (pTipoDocumentos.RegimenFiscalReciboHonorarios.Length > 100) Then
                    pTipoDocumentos.RegimenFiscalReciboHonorarios = pTipoDocumentos.RegimenFiscalReciboHonorarios.Substring(0, 100)
                End If
            End If

            If (pTipoDocumentos.UsaReciboArrendamiento AndAlso String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalReciboArrendamiento)) Then
                mensaje &= "El Régimen Fiscal para emisión de Recibo de Arrendamiento es requerido." & vbCrLf
            End If

            If Not (String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalReciboArrendamiento)) Then
                pTipoDocumentos.RegimenFiscalReciboArrendamiento = pTipoDocumentos.RegimenFiscalReciboArrendamiento.Trim
                If (pTipoDocumentos.RegimenFiscalReciboArrendamiento.Length > 100) Then
                    pTipoDocumentos.RegimenFiscalReciboArrendamiento = pTipoDocumentos.RegimenFiscalReciboArrendamiento.Substring(0, 100)
                End If
            End If

            If (pTipoDocumentos.UsaNotaCargo AndAlso String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalNotaCargo)) Then
                mensaje &= "El Régimen Fiscal para emisión de Nota de Cargo es requerido." & vbCrLf
            End If

            If Not (String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalNotaCargo)) Then
                pTipoDocumentos.RegimenFiscalNotaCargo = pTipoDocumentos.RegimenFiscalNotaCargo.Trim
                If (pTipoDocumentos.RegimenFiscalNotaCargo.Length > 100) Then
                    pTipoDocumentos.RegimenFiscalNotaCargo = pTipoDocumentos.RegimenFiscalNotaCargo.Substring(0, 100)
                End If
            End If

            If (pTipoDocumentos.UsaNotaCredito AndAlso String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalNotaCredito)) Then
                mensaje &= "El Régimen Fiscal para emisión de Nota de Crédito es requerido." & vbCrLf
            End If
            If Not (String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalNotaCredito)) Then
                pTipoDocumentos.RegimenFiscalNotaCredito = pTipoDocumentos.RegimenFiscalNotaCredito.Trim
                If (pTipoDocumentos.RegimenFiscalNotaCredito.Length > 100) Then
                    pTipoDocumentos.RegimenFiscalNotaCredito = pTipoDocumentos.RegimenFiscalNotaCredito.Substring(0, 100)
                End If
            End If

            If (pTipoDocumentos.UsaComprobantePagoPlazos AndAlso String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalComprobantePagoPlazos)) Then
                mensaje &= "El Régimen Fiscal para emisión de Comprobante de Pago a Plazos es requerido." & vbCrLf
            End If
            If Not (String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalComprobantePagoPlazos)) Then
                pTipoDocumentos.RegimenFiscalComprobantePagoPlazos = pTipoDocumentos.RegimenFiscalComprobantePagoPlazos.Trim
                If (pTipoDocumentos.RegimenFiscalComprobantePagoPlazos.Length > 100) Then
                    pTipoDocumentos.RegimenFiscalComprobantePagoPlazos = pTipoDocumentos.RegimenFiscalComprobantePagoPlazos.Substring(0, 100)
                End If
            End If

            If (pTipoDocumentos.UsaReciboDonativos AndAlso String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalReciboDonativos)) Then
                mensaje &= "El Régimen Fiscal para emisión de Recibo de Donativos es requerido." & vbCrLf
            End If
            If Not (String.IsNullOrWhiteSpace(pTipoDocumentos.RegimenFiscalReciboDonativos)) Then
                pTipoDocumentos.RegimenFiscalReciboDonativos = pTipoDocumentos.RegimenFiscalReciboDonativos.Trim
                If (pTipoDocumentos.RegimenFiscalReciboDonativos.Length > 100) Then
                    pTipoDocumentos.RegimenFiscalReciboDonativos = pTipoDocumentos.RegimenFiscalReciboDonativos.Substring(0, 100)
                End If
            End If

            With pTipoDocumentos
                If (Not .UsaFactura And
                    Not .UsaCartaPorte And
                    Not .UsaReciboHonorarios And
                    Not .UsaReciboArrendamiento And
                    Not .UsaNotaCargo And
                    Not .UsaNotaCredito And
                    Not .UsaComprobantePagoPlazos And
                    Not .UsaReciboDonativos) Then
                    mensaje &= "Debe indicar al menos un tipo de documento a emitir en el sistema." & vbCrLf
                End If
            End With

            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "TipoDocumentosBL.EsValidoParaRegistrar")
            mensaje &= ex.Message
            Return False
        End Try
    End Function

    Public Function ActualizaTipoDocumentos(ByVal TokenConexion As String, ByVal TipoDocumentos As TipoDocumentosBE, ByRef detResp As DetalleRespuesta) As Boolean
        detResp.Mensajes = ""
        Dim TipoDocumentosDAL As TipoDocumentosDAL = New TipoDocumentosDAL("")
        Try
            If (EsValidoParaActualizar(TipoDocumentos, detResp.Mensajes)) Then
                TipoDocumentosDAL = New TipoDocumentosDAL(RijndaelSimple.desencriptaDefault(TokenConexion))
                If (TipoDocumentosDAL.actualizaTipoDocumentos(TipoDocumentos)) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK, "Datos de Tipo de Documentos Actualizados.")
                    Return True
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueActualizado,
                                             "No se pudo realizar la actualización de Datos de Tipo de Documentos." & vbCrLf & detResp.Mensajes)
                    Return False
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                         "La informacion no es valida para actualizar: " & vbCrLf & detResp.Mensajes)
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "TipoDocumentosBL.ActualizaTipoDocumentos")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al actualizar Tipo de Documentos: " & ex.Message)
            Return False
        Finally
            TipoDocumentosDAL = Nothing
        End Try
    End Function

    Public Function GetTipoDocumentos(ByVal tokenConexion As String, ByRef detResp As DetalleRespuesta) As TipoDocumentosBE
        detResp.Mensajes = ""
        Dim tipoDocumentosDAL As TipoDocumentosDAL = New TipoDocumentosDAL("")
        Dim tipoDocumentosBE As TipoDocumentosBE
        Try
            tipoDocumentosDAL = New TipoDocumentosDAL(RijndaelSimple.desencriptaDefault(tokenConexion))
            tipoDocumentosBE = tipoDocumentosDAL.getTipoDocumentos()
            If (tipoDocumentosBE IsNot Nothing) Then
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK, "Se obtuvo la información de Tipo de Documentos con éxito.")
                Return tipoDocumentosBE
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_RegistroInexistenteOInactivo,
                                         "No se obtuvo la información de Tipo de Documentos" & vbCrLf & detResp.Mensajes)
                Return Nothing
            End If
        Catch ex As Exception
            Log.LogException(ex, "TipoDocumentosBL.GetTipoDocumentos")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                        detResp.Mensajes & "Excepción al obtener información de Tipo de Documentos: " & ex.Message)
            Return Nothing
        Finally
            tipoDocumentosDAL = Nothing
            tipoDocumentosBE = Nothing
        End Try
    End Function

    'Private Function EsValidoParaGetTipoDocumentos(ByRef pIdtipoDoctos As String, ByRef mensaje As String) As Boolean
    '    mensaje = ""
    '    Try
    '        If (String.IsNullOrEmpty(pIdtipoDoctos)) Then
    '            mensaje &= "El campo Id de Tipo de Documentos no puede ir  vacio." & vbCrLf
    '        Else
    '            If (IsNumeric(pIdtipoDoctos)) Then
    '                If (pIdtipoDoctos = 0) Then
    '                    mensaje &= "El campo Id de Tipo de Documentos debe ser mayor a 0." & vbCrLf
    '                End If
    '            Else
    '                mensaje &= "El campo Id de Tipo de Documentos debe ser numérico." & vbCrLf
    '            End If
    '        End If

    '        Return (mensaje = "")
    '    Catch ex As Exception
    '        Log.LogException(ex, "TipoDocumentosBL.EsValidoParaGetTipoDocumentos")
    '        mensaje &= ex.Message
    '        Return False
    '    End Try
    'End Function

End Class
